package com.spring.blog;

import org.junit.jupiter.api.Test;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class SecurityUtil {
    @Test
    /**
     * 加密操作，使用md5
     * 返回结果是salt+md5(salt+明文）
     * salt 32位
     * md5(salt+明文) 32位
     * 记住salt和md5(salt+明文）谁先谁后
     */
    String encrypt(String password){
        // uuid相当于是设备的id
        String salt= UUID.randomUUID().toString().replace("-","");
        System.out.println(salt);
        String finalPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        System.out.println(finalPassword);
        System.out.println(salt+finalPassword);
        return (salt+finalPassword);
    }
    @Test
    /**
     *
     */
    boolean verify(String password,String finalPassword){

        if(!StringUtils.hasLength(password)||!StringUtils.hasLength(finalPassword)){
            return false;
        }
        if(finalPassword.length()!=64){
            return false;
        }
        String salt=finalPassword.substring(0,32);
        String securityPassword=DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        return (salt+securityPassword).equals(finalPassword);
    }

   @Test
    void test(){
        String password="123456";
       String encrypt = encrypt(password);
       boolean verify = verify("123456", encrypt);
       System.out.println(verify);


   }

}
